Sous Linux, il existe de nombreux outils de sauvegarde offrant des fonctionnalités de sauvegarde au niveau du système ainsi que des données utilisateur. Dans cet article complet, nous allons voir ce qu'est BorgBackup et comment sauvegarder et restaurer des fichiers en utilisant Borg sous Linux et les systèmes Unix-like.
Table des matières
Comment sauvegarder et restaurer des fichiers en utilisant BorgBackup sous Linux.
4. Faites votre première sauvegarde avec Borg
5. Initialiser le répertoire de sauvegarde
6. Sauvegarde des fichiers en utilisant Borg
6.1. Créer la première sauvegarde
6.2. Afficher les fichiers lors de la création de sauvegardes
6.3. Créer des sauvegardes compressées
6.4. Obtenir des informations sur les archives
7.1. Lister les fichiers dans les archives
7.2. Exclure des fichiers et des répertoires de la sauvegarde
8. Trouver la différence entre des archives
10. Restaurer les fichiers en utilisant borg (Extraire les données de l'archive)
10.1. Exclure des fichiers de la restauration
11. Monter et démonter le référentiel et les archives
13. Supprimer le référentiel et l'archive
15. Exporter et importer la clé
16. Travailler avec des référentiels distants
17. Clients de bureau Borg GUI
Lorsque je traite beaucoup de données dans mon travail, les questions évidentes qui me viennent à l'esprit en premier lieu sont les suivantes : 1. Que faire si je perds mes données ? 2. Mes données sont-elles bien protégées ?
Le même scénario s'applique à la machine personnelle. Vous devez toujours sauvegarder vos données en fonction de leur importance et les protéger contre tout accès illégal.
Qu'il s'agisse de vos données personnelles ou de données officielles, vous devez toujours planifier une bonne stratégie de sauvegarde et utiliser des outils de sauvegarde robustes qui vous aideront à sauvegarder vos données importantes. L'une des applications de sauvegarde opensource les plus recommandées et les plus utilisées est "Borg".
BorgBackup, brièvement borg, est un outil de sauvegarde qui a été créé pour fournir un moyen efficace de sauvegarder vos données en utilisant la technique de déduplication.
Certaines des caractéristiques uniques de borg sont énumérées ci-dessous.
- Déduplication - La technique de déduplication stocke uniquement les copies incrémentielles des données, ce qui est parfait pour effectuer des sauvegardes quotidiennes.
- Multiplateforme - Borg peut être installé et utilisé sous Linux, Mac OS X et FreeBSD.
- Sécurisé - Prend en charge le cryptage des données en utilisant le cryptage AES (256 bits), pour vérifier l'authenticité HMAC-SHA256 est utilisé.
- Compression - Les données peuvent être compressées à l'aide des méthodes de compression suivantes :
◦ LZ4 -> Super rapide, faible compression.
◦ ZSTD -> Haute vitesse et faible compression à basse vitesse et haute compression.
◦ ZLIB -> Vitesse moyenne, Compression moyenne.
◦ LZMA -> Vitesse faible, Compression élevée.
- Sauvegarde à distance - Les données peuvent être sauvegardées sur des machines distantes via le protocole SSH.
Borg est disponible dans les dépôts par défaut de la plupart des distributions Linux. Ainsi, il peut être installé en utilisant le gestionnaire de paquets spécifique à la distribution.
Pour installer Borg dans Alpine Linux, exécutez la commande suivante :
$ sudo apk add borgbackup
Pour installer borg dans Arch Linux et ses variantes telles que EndeavourOS et Manjaro Linux, exécutez la commande suivante :
$ sudo pacman -S borg
Installer borg dans une distribution basée sur Debian/Ubuntu :
$ sudo apt install borgbackup -y
Installer borg dans Fedora, RHEL, CentOS, AlmaLinux et Rocky Linux :
$ sudo dnf install borgbackup -y
Installer Borg dans openSUSE :
$ sudo zypper install borgbackup -y
Puisque borg est écrit en Python, vous pouvez utiliser le gestionnaire de paquets python PiP pour installer borg. Selon la version de pip installée, vous pouvez exécuter l'une des commandes suivantes.
$ pip install borgbackup
Or,
$ pip3 install borgbackup
Une fois installé, vous pouvez vérifier l'installation de Borg en exécutant les commandes version et help :
$ borg --version
$ borg --help
Vous devez comprendre deux termes importants avant d'effectuer votre première sauvegarde.
- Archives - Les copies de sauvegarde (instantanés) de vos données sont appelées archives.
- Référentiels - Répertoires dans votre système de fichiers local ou distant où les archives sont stockées.
Commencez par initialiser un référentiel (répertoire) où les archives seront stockées.
J'ai une liste de fichiers dans un répertoire nommé "source" et j'ai créé un nouveau répertoire nommé "backup" qui servira de référentiel pour stocker les archives.
Exécutez la commande borg init pour initialiser le répertoire de sauvegarde. Le répertoire de sauvegarde peut être dans une machine locale ou une machine distante. Dans mon cas, je vais initialiser le répertoire (i.e. backup) que j'ai déjà créé.
$ borg init --encryption=none /home/karthick/borg/backup
$ borg init --encryption=repokey /home/karthick/borg/backup
$ borg init --encryption=keyfile /home/karthick/borg/backup
Lorsque vous initialisez un dépôt, vous pouvez choisir le type de cryptage. Lorsque vous utilisez le type de cryptage "None", aucun cryptage ne sera appliqué. Lorsque vous utilisez "repokey" et "keyfile" comme types de cryptage, il utilise AES-CTR-256 pour le cryptage.
Choisissez un type de cryptage et exécutez la commande init. Dans mon cas, je choisis le type de cryptage "none" à des fins de démonstration.
Une fois le référentiel initialisé, vous pouvez créer des archives de sauvegarde en exécutant la commande suivante :
$ borg create --stats --progress /home/karthick/borg/backup::25-11-2021 /home/karthick/borg/source/.
Ici, je donne le nom de l'archive au format de date "25-11-2021" simulant des sauvegardes quotidiennes. Sans les drapeaux --stats et --progress, la sortie de la commande create sera silencieuse.
Vous pouvez également combiner les drapeaux --list et -v pour afficher la liste des fichiers de l'archive tout en exécutant la commande borg create.
$ borg create --list -v /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/
Par défaut, borg utilise l'algorithme de compression lz4. L'algorithme de compression lz4 est très rapide et a un faible taux de compression. Si vous souhaitez utiliser un algorithme de compression différent, vous pouvez utiliser l'indicateur --compression et passer le type avec le niveau de compression.
Par exemple, si je souhaite utiliser l'algorithme zstd, alors ma commande sera la suivante.
$ borg create --compression zstd,1 /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/
Vous pouvez consulter les différents algorithmes de compression et leur niveau dans la documentation officielle de Borg.
Vous pouvez utiliser la commande info pour obtenir des informations sur une archive spécifique.
$ borg info /home/karthick/borg/backup/::25-11-2021
En utilisant la commande borg list, vous pouvez interroger votre référentiel pour trouver la liste des archives et quels fichiers se trouvent à l'intérieur de ces archives.
Pour obtenir la liste des archives seules, exécutez la commande suivante.
$ borg list /home/karthick/borg/backup
Exemple de résultat :
25-11-2021 Thu, 2021-11-25 13:16:53 [653d952301fc70ab9f2f74794361359144e05f5534e668ef4a4957d2c7f67937]
26-11-2021 Thu, 2021-11-25 13:19:51 [473bbe30fbe8597b63910310d567e69b501b2fb7127f04a78da76ab59d90114f]
27-11-2021 Thu, 2021-11-25 13:20:01 [0e6813f1a05246d43d196de9d28034d0397b4ae50cd20ee50163e347efee3e2a]
Vous pouvez également utiliser le drapeau --json qui donnera plus d'informations sur le dépôt et la liste des archives au format json.
$ borg list --json /home/karthick/borg/backup
Pour obtenir la liste des fichiers contenus dans une archive, exécutez la commande suivante. Ici, je liste les fichiers de l'archive "25-11-2021".
$ borg list /home/karthick/borg/backup::25-11-2021
Exemple de résultat :
drwxrwxr-x karthick karthick 0 Thu, 2021-11-25 12:48:58 home/karthick/borg/source
-rw-r--r-- karthick karthick 807 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/project_profile.txt
-rw------- karthick karthick 2301 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/hist.txt
-rw-r--r-- karthick karthick 220 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/external.txt
-rw-r--r-- karthick karthick 3895 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/config.txt
Vous pouvez également utiliser l'option --json-lines pour lister le contenu de l'archive au format JSON.
Vous pouvez exclure des fichiers et des répertoires en utilisant le drapeau -e ou --exclude.
$ borg list /home/karthick/borg/backup::25-11-2021 --exclude "hist"
Vous pouvez utiliser la commande diff pour comparer deux archives.
Je crée un nouveau fichier nommé datafile.txt dans le répertoire source. J'ai également créé une autre archive nommée 28-11-2021.
Maintenant, je peux comparer la nouvelle archive et l'ancienne archive comme ci-dessous :
$ borg diff /home/karthick/borg/backup/::27-11-2021 28-11-2021
added 2.89 kB home/karthick/borg/source/datafile.txt
Une fois qu'une archive est créée, si vous souhaitez la renommer, vous pouvez le faire en utilisant la commande borg rename.
Disons que si je souhaite renommer l'archive "27-11-2021" en "29-11-2021", je peux le faire en exécutant la commande suivante.
$ borg rename /home/karthick/borg/backup/::27-11-2021 29-11-2021
L'objectif principal de la sauvegarde des données est de les restaurer en cas de besoin. Vous pouvez donc utiliser la commande d'extraction de borg pour récupérer les données des archives. Lorsque vous exécutez la commande d'extraction, elle extrait les données dans le répertoire de travail actuel à partir duquel vous exécutez la commande d'extraction.
Exécutez la commande suivante pour extraire une archive dans le répertoire de travail actuel. Si vous ajoutez les drapeaux -v et --list, vous obtiendrez la liste des fichiers extraits.
$ borg extract -v --list backup/::25-11-2021
Vous pouvez également utiliser le drapeau --dry-run qui affichera simplement ce qui va être extrait au lieu de l'extraire.
$ borg extract --dry-run -v --list backup/::25-11-2021
Vous pouvez extraire un répertoire particulier de l'archive en passant le nom du répertoire. Comme je n'ai qu'un seul répertoire dans mon archive, il sera extrait.
$ borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/
Vous pouvez également ajouter --exclude pour omettre des fichiers lors de l'extraction d'un répertoire. Ici, j'extrais tous les fichiers en excluant tout fichier avec hist.
$ borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/ --exclude "hist"
Vous pouvez monter le référentiel ou une archive particulière en tant que système de fichiers à fusible. Vous pouvez ensuite restaurer des fichiers en utilisant l'archive montée.
Pour monter le référentiel entier, exécutez les commandes suivantes :
$ mkdir /tmp/borg/
$ borg mount /home/karthick/borg/backup/ /tmp/borg/
$ ls -l /tmp/borg/
Exemple de résultat:
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 25-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 26-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 27-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 28-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:32 29-11-2021
Vous pouvez voir dans le résultat ci-dessus que toutes mes archives sont montées comme un répertoire et maintenant je peux simplement restaurer en copiant les fichiers.
Pour monter des archives particulières, il suffit d'ajouter le nom de l'archive avec le référentiel.
$ borg mount /home/karthick/borg/backup/::25-11-2021 /tmp/borg/
Pour démonter le référentiel ou les archives montés, utilisez la commande borg umount.
$ borg umount /tmp/borg
$ ls -l /tmp/borg
La commande borg prune sera très utile lorsque vous automatisez vos sauvegardes et que vous voulez simplement maintenir seulement certaines copies et nettoyer les copies restantes.
Les options du tableau ci-dessus déterminent le nombre de copies d'archives à conserver dans votre référentiel. Par exemple, si je souhaite conserver seulement 2 copies de ma sauvegarde hebdomadaire, alors ma commande sera la suivante.
$ borg prune -v --list --keep-weekly=2 /home/karthick/borg/backup/
Vous pouvez également appliquer la condition susmentionnée à certaines archives uniquement. Par exemple, disons que j'ai 10 archives dans mon référentiel et que je souhaite appliquer la règle de conservation à l'archive 7, je peux utiliser le drapeau --prefix pour définir la condition.
$ borg prune -v --list --keep-weekly=2 --prefix='{archive name}' /home/karthick/borg/backup/
Avant d'exécuter la commande prune, faites un essai en utilisant l'indicateur --dry-run.
Vous pouvez supprimer une archive ou le référentiel entier en utilisant la commande borg delete.
Pour supprimer une seule archive, vous devez fournir le nom de l'archive.
$ borg delete /home/karthick/borg/backup/::26-11-2021
Pour supprimer l'archive entière, il suffit de fournir le chemin du référentiel. Lors de la suppression de l'ensemble du répertoire, vous serez invité à fournir une confirmation.
$ borg delete /home/karthick/borg/backup/
Jusqu'à présent, j'ai montré mon exemple sans appliquer de cryptage au référentiel. Comme prévu dans la section initiale, vous pouvez initialiser un répertoire avec le cryptage activé et si repokey ou keyfile est utilisé, il vous demandera de définir la phrase de passe en option.
$ borg init --encryption=repokey /home/karthick/borg/bkup/
A partir de maintenant, chaque fois que j'essaie d'effectuer une opération sur ce dépôt, je dois fournir la phrase de passe à chaque fois. Regardez l'image ci-dessous, j'essaie de lister le référentiel et je dois fournir une phrase de passe pour celui-ci.
Supposons maintenant que vous souhaitiez modifier la phrase de passe, vous pouvez le faire en utilisant la commande borg change-passphrase.
$ borg key change-passphrase -v /home/karthick/borg/bkup
Vous pouvez également définir la phrase de passe à l'aide de variables d'environnement.
$ BORG_PASSPHRASE="old password" BORG_NEW_PASSPHRASE="new password" borg key change-passphrase /home/karthick/borg/bkup
Vous pouvez sauvegarder la clé du référentiel en l'exportant et l'importer plus tard si nécessaire.
Pour exporter la clé, exécutez la commande suivante :
$ borg key export bkup/ ./key
$ cat ./key
Pour importer la clé dans le même référentiel, exécutez la commande suivante :
$ borg key import bkup/ ./key
Tout ce que nous avons vu jusqu'à présent consiste à sauvegarder vos données sur la même machine. Borg supporte également les dépôts distants où vous pouvez sauvegarder vos données sur n'importe quelle machine distante. L'hôte distant doit être accessible par SSH.
Syntaxe :
$ borg init user@hostname:/path/to/repo
Exemple:
$ borg init karthick@ostechnix:/home/karthick/borg/bkup
Vous pouvez effectuer toutes sortes d'opérations similaires à celles que vous pouvez effectuer avec une sauvegarde locale. Par exemple, pour restaurer la sauvegarde, vous pouvez utiliser l'extraction et vous pouvez également utiliser la commande mount pour monter un référentiel distant.
Ici, lorsque vous pointez vers le répertoire distant, vous devez utiliser le protocole ssh en tant que "ssh://username@hostname:port/path/to/repo".
$ borg mount ssh://karthick@ostechnix:2222/home/karthick/borg/bkup /tmp/borg
$ borg extract ssh://karthick@ostechnix:2222/home/karthick/borg/bkup
BorgBackup étant un outil purement en ligne de commande, il est presque impossible de se souvenir de toutes les commandes. Certains d'entre vous préfèrent peut-être une application graphique agréable qui vous permet de sauvegarder des données via une interface graphique. Ne vous inquiétez pas !
Vorta est un client de bureau GUI pour BorgBackup. En utilisant Vorta, vous pouvez facilement intégrer l'application Borg à votre environnement de bureau préféré. Pas besoin de mémoriser les commandes. Tout peut être fait via une simple interface graphique !
Pour plus de détails sur l'installation et l'utilisation de Vorta, consultez le guide suivant.
Dans cet article, nous avons vu comment utiliser Borg pour sauvegarder et restaurer vos données sous Linux. Borg a tellement de fonctionnalités que vous pouvez comprendre en testant l'outil. Une bonne alternative à borg sera Timeshift pour faire une sauvegarde au niveau du système et rsync pour les fichiers et répertoires de l'utilisateur.